﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }


    //파일 업로드 버튼 클릭
    //업로드 파일 저장 -> 파일 읽어서 구글 시각화 api 스크립트 생성
    protected void btnUpload_Click(object sender, EventArgs e)
    {

        if (fileUp.PostedFile != null)
        {
            string fileName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".txt";
            fileName = Server.MapPath("~/Upload/" + fileName);

            fileUp.PostedFile.SaveAs(fileName);

            ProcessFile(fileName);

            System.IO.File.Delete(fileName);
        }
    }

    //파일 읽어서 구글 시가화 api 스크립트 생성
    private void ProcessFile(string fileName)
    {
        bool isFirstLine = true;

        //구글 시각화 API 클래스 App_code 폴더 참조
        GoogleBizApi api = new GoogleBizApi();

        //업로드 파일 읽기
        using (System.IO.FileStream fileStream = new System.IO.FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite))
        {
            using (System.IO.StreamReader reader = new System.IO.StreamReader(fileStream))
            {
                string strFileContents;
                //한 라인씩 읽기
                while ((strFileContents = reader.ReadLine()) != null)
                {
                    //첫번째 라인 - 헤더정보
                    //datatype:타이틀 형태로 콤마로 구분된 자료
                    if (isFirstLine)
                    {
                        api.AddColumn(strFileContents);
                        isFirstLine = false;
                    }
                    //첫번째 이후 라인 - 콤마로 구분된 자료
                    else
                    {
                        api.SetCell(strFileContents);
                    }
                }
                reader.Close();
            }
        }

        

        string strSource = api.GetSource("Table", "display_table", "showRowNumber: true");
        strSource += api.GetSource("AreaChart", "display_chart", "width: 400, height: 300, legend: 'bottom', title: 'AreaChart 샘플 데이터'");
        strSource += api.GetSource("GeoMap", "display_map", "dataMode: 'regions'");


        //생성된 스크립트 실행
        Page.ClientScript.RegisterStartupScript(this.GetType(), "ViewData", strSource, false);


    }


}
